package yl.hs.bmipfull.service.system;


import yl.hs.bmipfull.pojo.system.MenuInfoEntity;
import yl.hs.bmipfull.service.IBaseService;
import yl.hs.bmipfull.viewmodels.PageQuery;
import yl.hs.bmipfull.viewmodels.SubmitModel;

import java.util.List;

/**
 * @author 张凯 on 2021/5/10 <br/>
 * 系统菜单服务层
 */
public interface IMenuInfoService extends IBaseService {

    /**
     * 查询所有菜单信息信息
     *
     * @param pageQuery 查询条件 {@link PageQuery}
     * @return 菜单信息-List<{@link MenuInfoEntity}>
     * @throws Exception 查询条件异常
     */
    List<MenuInfoEntity> queryList(PageQuery pageQuery) throws Exception;


    /**
     * 根据系统菜单编号查询系统菜单信息
     *
     * @param sn 编号
     * @return 系统菜单信息-MenuInfoEntity
     */
    MenuInfoEntity findBySn(String sn);

    /**
     * 根据父级编号查询菜单信息
     *
     * @param parentSn 父级编号
     * @return 系统菜单信息-List-MenuInfoEntity
     */
    List<MenuInfoEntity> queryByParentSn(String parentSn);


    /**
     * 保存系统菜单信息
     *
     * @param submitModel 系统菜单视图模型
     * @return 执行结果-受影响行数-Integer
     * @throws Exception 保存异常
     */
    Integer saveMenu(SubmitModel submitModel) throws Exception;

    /**
     * 根据系统菜单编号删除系统菜单信息
     *
     * @param sn 系统菜单编号
     * @return 受影响行数
     */
    Integer delete(String[] sn);

    List<Object> queryPermissionTree();
}
